<?php 
namespace lib;
class SQLDB{
    public function __construct() {
        global $DB;
        $this->DB   = $DB;
    }
    
    public function executeSQLQuery($sql, $operation = 'select') {
        try {
            $stmt = $this->DB->prepare($sql);
            $stmt->execute();
            if ($operation === 'select') {
                return $stmt->fetch(PDO::FETCH_ASSOC);
            } elseif ($operation === 'delete' || $operation === 'update' || $operation === 'insert') {
                return $stmt->rowCount(); // 返回受影响的行数
            } else {
                return false;
            }
        } catch (PDOException $e) {
            return false;
        }
    }
    ///////////////////////////////////////////////////////////////////
    //执行sql操作 并防范sql注入函数  查询支持返回 数量 和记录集
    public function safeSqlQuery($sql, $params, $operation = 'select') {

        // 使用 PDO 预处理语句执行查询
        $stmt = $this->DB->prepare($sql);
    
        // 绑定参数
        foreach ($params as $paramName => &$paramValue) {
            $stmt->bindParam(":$paramName", $paramValue, PDO::PARAM_STR);
        }
        // 执行查询
        $stmt->execute();
    
        // 根据操作类型返回结果
        switch (strtolower($operation)) {
            case 'select':
                // 获取实际的结果集
                $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
                // 获取记录数量
                $count = count($result);
                return ['result' => $result, 'count' => $count];
                break;
            case 'insert':
                if(!$this->DB->lastInsertId()) return $stmt->rowCount();
                 return $this->DB->lastInsertId();
                break;
            case 'update':
            case 'delete':
                // 返回受影响的行数
                return $stmt->rowCount();
                break;
    
            default:
                // 如果提供的操作不在支持范围内，返回空数组
                return false;
        }
    }
}



?>